I. Field of the Disclosure
The technology of the disclosure relates generally to flash-memory-based storage in mobile computing devices.
II. Background
Flash memory is a non-volatile data storage medium to which data may be electronically written and erased. Flash memory is presently used in a variety of flash-memory-based storage devices, including memory cards, solid-state drives, and Universal Serial Bus (USB) flash drives. Flash-memory-based storage devices may offer fast read and write times comparable to dynamic Random Access Memory (RAM) while providing higher durability and shock resistance than conventional hard disks.
To facilitate the widespread use of flash-memory-based storage devices, a number of standards have been developed or are currently under development. One such standard is Universal Flash Storage (UFS), developed by the Joint Electron Device Engineering Council (JEDEC) for flash-memory-based storage in mobile computing devices, such as smart phones and tablet computers. UFS adopts the Small Computer System Interface (SCSI) Architecture Model and command protocols supporting multiple commands with command queuing features, thus enabling a multi-thread programming paradigm. Another standard developed by JEDEC is the Embedded MultiMediaCard (eMMC) standard, which offers a simplified application interface design, small package sizes, and low power consumption. eMMC flash-memory-based storage devices are presently one of the primary forms of storage in mobile devices.
Conventional flash-memory-based storage device standards, such as UFS and eMMC, are currently designed for management and usage by a single input/output (I/O) client. However, many modern computing devices are capable of supporting multiple I/O clients (e.g., hosts or other processor subsystems) simultaneously using virtualization environments. In such virtualization environments, multiple I/O clients may each need to interact with a single flash-memory-based storage device as if it were the only host of the flash-memory-based storage device. Similarly, the flash-memory-based storage device may need to operate as if it is communicating with only a single I/O client, when, in fact, it is communicating with multiple I/O clients.
In particular, a conventional host controller (HC) for a flash-memory-based storage device may provide a transfer request list (TRL) made up of multiple “slots” (also referred to under some standards as a task descriptor list (TDL), comprising multiple task descriptors (TDs)). The slots may be used by an I/O client for issuing transfer requests (TRs), such as read/write transactions, to the flash-memory-based storage device. However, to provide access to the flash-memory-based storage device in a multi-host environment, the HC may need to allow multiple I/O clients to access the TRL, as opposed to a single host.